<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- 
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License. 
-->
<html>
<head>
    <link type="text/css" rel="stylesheet" href="https://struts.apache.org/css/default.css">
    <style type="text/css">
        .dp-highlighter {
            width:95% !important;
        }
    </style>
    <style type="text/css">
        .footer {
            background-image:      url('https://cwiki.apache.org/confluence/images/border/border_bottom.gif');
            background-repeat:     repeat-x;
            background-position:   left top;
            padding-top:           4px;
            color:                 #666;
        }
    </style>
    <link href='https://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' />
    <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' />
    <script src='https://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script>
    <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>
    <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' type='text/javascript'></script>
    <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script>
    <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' type='text/javascript'></script>
    <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' type='text/javascript'></script>
    <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' type='text/javascript'></script>
    <script type="text/javascript">
        SyntaxHighlighter.defaults['toolbar'] = false;
        SyntaxHighlighter.all();
    </script>
    <script type="text/javascript" language="javascript">
        var hide = null;
        var show = null;
        var children = null;

        function init() {
            /* Search form initialization */
            var form = document.forms['search'];
            if (form != null) {
                form.elements['domains'].value = location.hostname;
                form.elements['sitesearch'].value = location.hostname;
            }

            /* Children initialization */
            hide = document.getElementById('hide');
            show = document.getElementById('show');
            children = document.all != null ?
                    document.all['children'] :
                    document.getElementById('children');
            if (children != null) {
                children.style.display = 'none';
                show.style.display = 'inline';
                hide.style.display = 'none';
            }
        }

        function showChildren() {
            children.style.display = 'block';
            show.style.display = 'none';
            hide.style.display = 'inline';
        }

        function hideChildren() {
            children.style.display = 'none';
            show.style.display = 'inline';
            hide.style.display = 'none';
        }
    </script>
    <title>Cookie Interceptor</title>
</head>
<body onload="init()">
<table border="0" cellpadding="2" cellspacing="0" width="100%">
    <tr class="topBar">
        <td align="left" valign="middle" class="topBarDiv" align="left" nowrap>
            &nbsp;<a href="home.html">Home</a>&nbsp;&gt;&nbsp;<a href="guides.html">Guides</a>&nbsp;&gt;&nbsp;<a href="core-developers-guide.html">Core Developers Guide</a>&nbsp;&gt;&nbsp;<a href="interceptors.html">Interceptors</a>&nbsp;&gt;&nbsp;<a href="cookie-interceptor.html">Cookie Interceptor</a>
        </td>
        <td align="right" valign="middle" nowrap>
            <form name="search" action="https://www.google.com/search" method="get">
                <input type="hidden" name="ie" value="UTF-8" />
                <input type="hidden" name="oe" value="UTF-8" />
                <input type="hidden" name="domains" value="" />
                <input type="hidden" name="sitesearch" value="" />
                <input type="text" name="q" maxlength="255" value="" />
                <input type="submit" name="btnG" value="Google Search" />
            </form>
        </td>
    </tr>
</table>

<div id="PageContent">
    <div class="pageheader" style="padding: 6px 0px 0px 0px;">
        <!-- We'll enable this once we figure out how to access (and save) the logo resource -->
        <!--img src="/wiki/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"-->
        <div style="margin: 0px 10px 0px 10px" class="smalltext">Apache Struts 2 Documentation</div>
        <div style="margin: 0px 10px 8px 10px"  class="pagetitle">Cookie Interceptor</div>

        <div class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;">
            <a href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=48571">
                <img src="https://cwiki.apache.org/confluence/images/icons/notep_16.gif"
                     height="16" width="16" border="0" align="absmiddle" title="Edit Page"></a>
            <a href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=48571">Edit Page</a>
            &nbsp;
            <a href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW">
                <img src="https://cwiki.apache.org/confluence/images/icons/browse_space.gif"
                     height="16" width="16" border="0" align="absmiddle" title="Browse Space"></a>
            <a href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW">Browse Space</a>
            &nbsp;
            <a href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=48571">
                <img src="https://cwiki.apache.org/confluence/images/icons/add_page_16.gif"
                     height="16" width="16" border="0" align="absmiddle" title="Add Page"></a>
            <a href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=48571">Add Page</a>
            &nbsp;
            <a href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=48571">
                <img src="https://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif"
                     height="16" width="16" border="0" align="absmiddle" title="Add News"></a>
            <a href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=48571">Add News</a>
        </div>
    </div>

    <div class="pagecontent">
        <div class="wiki-content">
            <div id="ConfluenceContent">
<p></p><p>
The aim of this interceptor is to set values in the stack/action based on cookie name/value
of interest.
</p>

<p></p><p>
If an asterisk is present in cookiesName parameter, it will be assume that
all cookies name are to be injected into struts' action, even though
cookiesName is comma-separated by other values, e.g. (cookie1,*,cookie2).
</p>

<p></p><p>
If cookiesName is left empty it will assume that no cookie will be injected
into Struts' action.
</p>

<p></p><p>
If an asterisk is present in cookiesValue parameter, it will assume that all
cookies name irrespective of its value will be injected into Struts' action so
long as the cookie name matches those specified in cookiesName parameter.
</p>

<p></p><p>
If cookiesValue is left empty it will assume that all cookie that match the cookieName
parameter will be injected into Struts' action.
</p>

<p></p><p>
The action could implement CookiesAware in order to have a Map
of filtered cookies set into it.
</p>


<p>Parameters</p>

<p></p><ul><li>cookiesName (mandatory) - Name of cookies to be injected into the action. If more
                                                                than one cookie name is desired it could be comma-separated.
                                                                If all cookies name is desired, it could simply be *, an asterik.
                                                                When many cookies name are comma-separated either of the cookie
                                                       that match the name in the comma-separated list will be qualified.</li><li>cookiesValue (mandatory) - Value of cookies that if its name matches cookieName attribute
                                                        and its value matched this, will be injected into Struts'
                                                        action. If more than one cookie name is desired it could be
                                                        comma-separated. If left empty, it will assume any value would
                                                        be ok. If more than one value is specified (comma-separated)
                                                        it will assume a match if either value is matched.</li><li>acceptCookieNames (optional) - Pattern used to check if name of cookie matches the provided patter, to </li></ul>


<p>Extending the Interceptor</p>

<p></p><ul><li>
        populateCookieValueIntoStack - this method will decide if this cookie value is qualified
        to be populated into the value stack (hence into the action itself)
    </li><li>
        injectIntoCookiesAwareAction - this method will inject selected cookies (as a java.util.Map)
        into action that implements CookiesAware.
    </li></ul>


<p>Examples</p>
<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
<script class="brush: xml; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[

&lt;!--
  This example will inject cookies named either &#39;cookie1&#39; or &#39;cookie2&#39; whose
  value could be either &#39;cookie1value&#39; or &#39;cookie2value&#39; into Struts&#39; action.
--&gt;
&lt;action ... &gt;
   &lt;interceptor-ref name=&quot;cookie&quot;&gt;
       &lt;param name=&quot;cookiesName&quot;&gt;cookie1, cookie2&lt;/param&gt;
       &lt;param name=&quot;cookiesValue&quot;&gt;cookie1value, cookie2value&lt;/param&gt;
   &lt;/interceptor-ref&gt;
   ....
&lt;/action&gt;


&lt;!--
     This example will inject cookies named either &#39;cookie1&#39; or &#39;cookie2&#39;
    regardless of their value into Struts&#39; action.
--&gt;
&lt;action ... &gt;
  &lt;interceptor-ref name=&quot;cookie&quot;&gt;
     &lt;param name=&quot;cookiesName&quot;&gt;cookie1, cookie2&lt;/param&gt;
     &lt;param name=&quot;cookiesValue&quot;&gt;*&lt;/param&gt;
  &lt;interceptor-ref&gt;
  ...
&lt;/action&gt;


&lt;!--
     This example will inject cookies named either &#39;cookie1&#39; with value
     &#39;cookie1value&#39; or &#39;cookie2&#39; with value &#39;cookie2value&#39; into Struts&#39;
     action.
--&gt;
&lt;action ... &gt;
  &lt;interceptor-ref name=&quot;cookie&quot;&gt;
     &lt;param name=&quot;cookiesName&quot;&gt;cookie1&lt;/param&gt;
     &lt;param name=&quot;cookiesValue&quot;&gt;cookie1value&lt;/param&gt;
  &lt;/interceptor-ref&gt;
  &lt;interceptor-ref name=&quot;cookie&quot;&gt;
     &lt;param name=&quot;cookiesName&quot;&lt;cookie2&lt;/param&gt;
    &lt;param name=&quot;cookiesValue&quot;&gt;cookie2value&lt;/param&gt;
  &lt;/interceptor-ref&gt;
  ....
&lt;/action&gt;

&lt;!--
   This example will inject any cookies regardless of its value into
   Struts&#39; action.
 --&gt;
&lt;action ... &gt;
  &lt;interceptor-ref name=&quot;cookie&quot;&gt;
     &lt;param name=&quot;cookiesName&quot;&gt;*&lt;/param&gt;
     &lt;param name=&quot;cookiesValue&quot;&gt;*&lt;/param&gt;
  &lt;/interceptor-ref&gt;
   ...
&lt;/action&gt;

]]></script>
</div></div></div>
        </div>

        
    </div>
</div>
<div class="footer">
    Generated by CXF SiteExporter
</div>
</body>
</html>
